package com.sxj.corejava.code11_io.File;

import com.sxj.corejava.util.DateUtil;

import java.io.File;
import java.io.IOException;
import java.util.Date;

/**
 * @author 石小俊
 * @date 2024年05月14日 19:50
 */
public class Test03_常用方法 {

    public static void main(String[] args) throws IOException {
        test02();
    }

    public static void test01() {
//        File file = new File("E:/itany/a.txt");
//        File file = new File("one/src/dataSource.properties");
//        File file = new File("one/src/aaa.txt");
        File file = new File("D:/software/apache-maven-3.9.0-bin.zip");
        System.out.println("文件是否存在:" + file.exists());
        System.out.println("文件名:" + file.getName());
        // 参数路径
        System.out.println("文件参数路径名:" + file.getPath());
        // 绝对路径
        System.out.println("文件绝对路径名:" + file.getAbsolutePath());
        System.out.println("父目录:" + file.getParent());
        File parent = file.getParentFile();
        System.out.println("父目录文件对象:" + parent);
        System.out.println("文件长度:" + file.length());
        System.out.println("文件最后修改时间:" + DateUtil.toString(new Date(file.lastModified())));
        System.out.println("文件是否可读:" + file.canRead());
        System.out.println("文件是否可写:" + file.canWrite());
        System.out.println("是否为隐藏文件:" + file.isHidden());
        System.out.println("是否为文件:" + file.isFile());
        System.out.println("是否为目录:" + file.isDirectory());
        System.out.println("获取系统路径分隔符:" + File.separator);

    }

    public static void test02() throws IOException {
        File file = new File("E:\\test\\d.txt");
        boolean flag = file.createNewFile();
        System.out.println("文件是否创建成功:" + flag);

        // 重命名
        boolean flag2 = file.renameTo(new File("E:\\test\\dd.txt"));
        System.out.println("文件是否重命名成功:" + flag2);

        // 删除文件
        File file2 = new File("E:/test/b.txt");
        boolean flag3 = file2.delete();
        System.out.println("文件是否删除成功:" + flag3);

        // 创建目录
        File file3 = new File("E:/test/a1");
        // 该方法只能创建一层目录
        file3.mkdir();

        // 创建多个目录
        File file4 = new File("E:/test/b1/aa1");
        file4.mkdirs();

        File file5 = new File("E:/test/a1");
        boolean flag4 = file5.delete();
        // 删除时只能删除一层
        System.out.println("文件是否删除成功:" + flag4);

        File file6 = new File("E:/test/b1");
        // 展示指定目录中所有文件名
        String[] list = file6.list();
        for (String s : list) {
            System.out.println(s);
        }

        File[] files = file6.listFiles();
        for (File f : files) {
            System.out.println(f);
        }
    }
}
